package cl.tinet.trainee.salas.dao;

import java.util.List;

import cl.tinet.trainee.salas.model.ReservaSala;
import cl.tinet.trainee.salas.model.Usuario;

/**
 * 
 * Interfaz del DAO tipo Usuario.
 * 
 * @author Naht-Sams
 */
public interface UsuarioDaoInterfaz {

    /**
     * Agregar un usuario a la BD.
     * 
     * @param datosUsuario
     *            Datos de usuario
     */
    void agregarUsuario(Usuario datosUsuario);

    /**
     * Modificar un usuario de la BD.
     * 
     * @param datosUsuario
     *            Datos de usuario
     */
    void modificarUsuario(Usuario datosUsuario);

    /**
     * Obtener lista de usuarios de la BD.
     * 
     * @param usuario
     * @return Lista de usuarios.
     */
    List<Usuario> buscarListaUsuarios();

    /**
     * Borrar un usuario de la BD.
     * 
     * @param datosUsuario
     *            Objeto Usuario.
     */
    void borrarUsuario(Usuario datosUsuario);

    /**
     * Buscar un usuario antes de agregarlo a la BD.
     * 
     * @param datosUsuario
     *            Objeto Usuario.
     * @return Objeto Usuario.
     */
    Usuario buscarUsuarioAntesDeCrear(Usuario datosUsuario);

    /**
     * Buscar un usuario especifico de la Bd.
     * 
     * @param datosUsuario
     *            Objeto Usuario.
     * @return Objeto Usuario.
     */
    Usuario buscarUsuario(Usuario datosUsuario);
    /**
     * Corroborar que la password ingresada corresponda al usuario.
     * 
     * @param datosUsuario
     *            Objeto Usuario.
     * @return Objeto Usuario.
     */
    Usuario verificarPasswordUsuario(Usuario datosUsuario);
    /**
     * Obtener lista de reservas de un usuario en particular.
     * 
     * @param usuario datos del usuario que se esta buscando.
     * @return Lista de usuarios.
     */
    List<ReservaSala> buscarReservasUsuario(Usuario usuario);
}
